﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dem2
{
    class Program
    {
        static void Main(string[] args)
        {
            //D1();
            //D2();
            //D3();
            //D4();
            //D5();
            //D6();
            //D7();
            //D8();
            //D9();
            D10();

        }

        static void D1()
        {
            //foreach输入一行字符串，分别统计出其中英文字母、数字、空格的个数。
            int num = 0;
            int Lstternum = 0;
            int spacenum = 0;
            Console.WriteLine("请输入字符串");
            string str = Console.ReadLine();
            foreach (var item in str)
            {
                if (char.IsDigit(item)) { num++; }
                if (char.IsLetter(item)) { Lstternum++; }
                if (char.IsWhiteSpace(item)) { spacenum++; }
            }
            Console.WriteLine("出现的英文字母个数{0},出现的数字个数{1}，出现的空格个数{2}", num, Lstternum, spacenum);
        }
        static void D2()
        {
            //创建一个 double 类型的数组，并在该数组中存入 5 名学生的考试成绩(控制台输入)，计算总成绩和平均成绩。
            //要求使用foreach语句实现该功能，
            double[] arr = new double[5];
            double sum = 0;
            int num = 0;
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                Console.WriteLine("请输入第" + (i + 1) + "名同学的考试成绩");
                string str = Console.ReadLine();
                double score = double.Parse(str);
                arr[i] = score;
            }
            foreach (var item in arr)
            {
                sum = sum + item;
                num++;
            }
            Console.WriteLine("总分为{0}，平均分为{1}", sum, (sum / num));
        }
        static void D3()
        {
            //定义一个方法，实现一维数组的排序功能，从大到小排序。(不要用Array类的方法)a=b,b=c,c=a
            int[] arr = new int[] { 3, 1, 7, 5, 4 };
            int temp = 0;
            Console.Write("排序前: ");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < arr.GetLength(0) - 1; i++)
            {
                for (int j = 0; j < arr.GetLength(0) - 1 - i; j++)
                {
                    if (arr[j] < arr[j + 1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }

                }
            }
            Console.Write("排序后: ");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
        }
        static void D4()
        {
            //实现查找数组元素索引的功能。
            //定义一个数组，然后控制台输入要查找的元素，返回输入值在数组中最后一次出现的位置。
            //若是找不到，请打印找不到。(不要用Array类的方法)
            int[] arr = new int[] { 3, 1, 7, 5, 4 };
            Console.WriteLine("请输入要查找的元素");
            string str = Console.ReadLine();
            double index = -1;
            int num = int.Parse(str);
            for (int i = 0; i < arr.Length; i++)
            {
                if (num == arr[i])
                {
                    Console.WriteLine("你所查询的索引值为" + i);
                    index = i;
                }
            }
            if (index == -1) ;
            { Console.WriteLine("找不到该元素"); }

        }
        static void D5()
        {
            //打印九九乘法表
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(i + "*" + j + "=" + (i * j) + "\t");
                }
                Console.WriteLine();
            }
        }
        static void D6()
        {
            //用户输入正方形边长，用*打印出空心正方形。
            Console.WriteLine("请输入正方形边长");
            string str = Console.ReadLine();
            int num = int.Parse(str);
            for (int i = 1; i <= num; i++)
            {
                for (int j = 1; j <= num; j++)
                {
                    if (i == 1 || i == num || j == 1 || j == num) { Console.Write("*"); }
                    else { Console.Write(" "); }


                }
                Console.WriteLine();
            }

        }
        static void D7()
        {
            //打印菱形
            Console.WriteLine("请输入一个奇数");
            string str = Console.ReadLine();
            int num = int.Parse(str);
            int max = (num + 1) / 2 + 1;
            int min = (num - max) + 1;
            for (int i = 1; i < max; i++)
            {
                for (int a = 1; a <= max - i; a++)
                {
                    Console.Write(" ");
                }

                for (int b = 1; b <= 2 * i - 1; b++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            for (int j = 1; j <= min; j++)
            {
                for (int c = 1; c <= j + 1; c++)
                {
                    Console.Write(" ");

                }

                for (int d = 1; d <= num - 2 * j; d++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();

            }

        }
        static void D8()
        {
            //打印正方形
            Console.WriteLine("请输入正方形边长");
            string str = Console.ReadLine();
            int num = int.Parse(str);
            for (int i = 1; i <= num; i++)
            {
                for (int j = 1; j <= num; j++)
                {
                    Console.Write("*" + " ");

                }
                Console.WriteLine();
            }

        }
        static void D9()
        {
            //创建一个字符串类型的数组，并存入 5 个值，然后将数组中下标是偶数的元素输出。
            string[] arr = new string[] { "一", "二", "三", "四", "五" };
            int num = 0;
            Console.WriteLine("下标为偶数的元素有：");
            foreach (var item in arr)
            {
                num++;
                if (num % 2 == 0) { Console.Write(item + " "); }
            }

        }
        static void D10()
        {
            //如果一个数组保存元素是有序的（从大到小），向这个数组中插入一个数，使得插入后的数组元素仍然保持有序。
            int[] a = new int[] { 12, 344, 5, 4, 2453, 23 };
            int[] b = new int[a.Length + 1];
            Console.WriteLine("请输入你要插入的数字");
            for (int i = 0; i < b.Length; i++)
            {
                if (i == b.Length - 1)
                {
                    b[i] = int.Parse(Console.ReadLine());
                }
                else {
                    b[i] = a[i];
                }
            }
            for (int i = 0; i < b.Length - 1; i++)
            {
                for (int j = 0; j < b.Length - 1 - i; j++)
                {
                    if (b[j] > b[j + 1])
                    {
                        int temp = b[j];
                        b[j] = b[j + 1];
                        b[j + 1] = temp;
                    }
                }
            }
            Array.Reverse(b);
            foreach (var item in b)
            {
                Console.Write(item + " ");
            }
        }
    }

}
